#ifndef __LINKQUEUE_H_
#define __LINKQUEUE_H_

#include "LinkList.hpp"
template<typename T>
class LinkQueue:public LinkList<T>
{
public:
    void Push(const T& element);
    void Pop();
    bool Empty();
    T& GetFront();
    int QueueSize()
    {
        return this->Size();
    }
};

template <typename T>
inline void LinkQueue<T>::Push(const T &element)
{
    this->InsertTail(element);
}

template <typename T>
inline void LinkQueue<T>::Pop()
{
    this->RemoveByIndex(0);
}

template <typename T>
inline bool LinkQueue<T>::Empty()
{
    return !this->Size();
}

template <typename T>
inline T &LinkQueue<T>::GetFront()
{
    return this->FindByIndex(0);
}

#endif